(0) Obligation:

Clauses:

transpose(A, B) :- transpose_aux(A, [], B).
transpose_aux(.(R, Rs), X1, .(C, Cs)) :- ','(row2col(R, .(C, Cs), Cols1, Accm), transpose_aux(Rs, Accm, Cols1)).
transpose_aux([], X, X).
row2col(.(X, Xs), .(.(X, Ys), Cols), .(Ys, Cols1), .([], As)) :- row2col(Xs, Cols, Cols1, As).
row2col([], [], [], []).

Query: transpose(g,a)

(1) PrologToPrologProblemTransformerProof (SOUND transformation)

Built Prolog problem from termination graph ICLP10.

(2) Obligation:

Clauses:

row2colA(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) :- row2colA(T82, T85, X139, X140).
row2colA([], [], [], []).
pB(T24, T28, T29, X35, X36, T25) :- row2colC(T24, T28, T29, X35, X36).
pB(T24, T28, T29, .(T120, T121), T117, .(T115, T116)) :- ','(row2colC(T24, T28, T29, .(T120, T121), T117), pB(T115, T120, T121, X185, X186, T116)).
pB(T24, T28, T29, T128, T128, []) :- row2colC(T24, T28, T29, T128, T128).
row2colC(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92)) :- row2colA(T57, T60, X91, X92).
transposeD(.(T24, T25), .(T28, T29)) :- pB(T24, T28, T29, X35, X36, T25).
transposeD([], []).

Query: transposeD(g,a)

(3) PrologToPiTRSProof (SOUND transformation)

We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes:
transposeD_in: (b,f)
pB_in: (b,f,f,f,f,b)
row2colC_in: (b,f,f,f,f)
row2colA_in: (b,f,f,f)
Transforming Prolog into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:

transposeD_in_ga(.(T24, T25), .(T28, T29)) → U7_ga(T24, T25, T28, T29, pB_in_gaaaag(T24, T28, T29, X35, X36, T25))
pB_in_gaaaag(T24, T28, T29, X35, X36, T25) → U2_gaaaag(T24, T28, T29, X35, X36, T25, row2colC_in_gaaaa(T24, T28, T29, X35, X36))
row2colC_in_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92)) → U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_in_gaaa(T57, T60, X91, X92))
row2colA_in_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) → U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_in_gaaa(T82, T85, X139, X140))
row2colA_in_gaaa([], [], [], []) → row2colA_out_gaaa([], [], [], [])
U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_out_gaaa(T82, T85, X139, X140)) → row2colA_out_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140))
U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_out_gaaa(T57, T60, X91, X92)) → row2colC_out_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92))
U2_gaaaag(T24, T28, T29, X35, X36, T25, row2colC_out_gaaaa(T24, T28, T29, X35, X36)) → pB_out_gaaaag(T24, T28, T29, X35, X36, T25)
pB_in_gaaaag(T24, T28, T29, .(T120, T121), T117, .(T115, T116)) → U3_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_in_gaaaa(T24, T28, T29, .(T120, T121), T117))
U3_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_out_gaaaa(T24, T28, T29, .(T120, T121), T117)) → U4_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, pB_in_gaaaag(T115, T120, T121, X185, X186, T116))
pB_in_gaaaag(T24, T28, T29, T128, T128, []) → U5_gaaaag(T24, T28, T29, T128, row2colC_in_gaaaa(T24, T28, T29, T128, T128))
U5_gaaaag(T24, T28, T29, T128, row2colC_out_gaaaa(T24, T28, T29, T128, T128)) → pB_out_gaaaag(T24, T28, T29, T128, T128, [])
U4_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, pB_out_gaaaag(T115, T120, T121, X185, X186, T116)) → pB_out_gaaaag(T24, T28, T29, .(T120, T121), T117, .(T115, T116))
U7_ga(T24, T25, T28, T29, pB_out_gaaaag(T24, T28, T29, X35, X36, T25)) → transposeD_out_ga(.(T24, T25), .(T28, T29))
transposeD_in_ga([], []) → transposeD_out_ga([], [])

The argument filtering Pi contains the following mapping:
transposeD_in_ga(x1, x2)  =  transposeD_in_ga(x1)
.(x1, x2)  =  .(x1, x2)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
pB_in_gaaaag(x1, x2, x3, x4, x5, x6)  =  pB_in_gaaaag(x1, x6)
U2_gaaaag(x1, x2, x3, x4, x5, x6, x7)  =  U2_gaaaag(x7)
row2colC_in_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_in_gaaaa(x1)
U6_gaaaa(x1, x2, x3, x4, x5, x6, x7)  =  U6_gaaaa(x7)
row2colA_in_gaaa(x1, x2, x3, x4)  =  row2colA_in_gaaa(x1)
U1_gaaa(x1, x2, x3, x4, x5, x6, x7)  =  U1_gaaa(x7)
[]  =  []
row2colA_out_gaaa(x1, x2, x3, x4)  =  row2colA_out_gaaa(x4)
row2colC_out_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_out_gaaaa(x5)
pB_out_gaaaag(x1, x2, x3, x4, x5, x6)  =  pB_out_gaaaag(x5)
U3_gaaaag(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U3_gaaaag(x7, x8, x9)
U4_gaaaag(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U4_gaaaag(x6, x9)
U5_gaaaag(x1, x2, x3, x4, x5)  =  U5_gaaaag(x5)
transposeD_out_ga(x1, x2)  =  transposeD_out_ga

Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog

(4) Obligation:

Pi-finite rewrite system:
The TRS R consists of the following rules:

transposeD_in_ga(.(T24, T25), .(T28, T29)) → U7_ga(T24, T25, T28, T29, pB_in_gaaaag(T24, T28, T29, X35, X36, T25))
pB_in_gaaaag(T24, T28, T29, X35, X36, T25) → U2_gaaaag(T24, T28, T29, X35, X36, T25, row2colC_in_gaaaa(T24, T28, T29, X35, X36))
row2colC_in_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92)) → U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_in_gaaa(T57, T60, X91, X92))
row2colA_in_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) → U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_in_gaaa(T82, T85, X139, X140))
row2colA_in_gaaa([], [], [], []) → row2colA_out_gaaa([], [], [], [])
U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_out_gaaa(T82, T85, X139, X140)) → row2colA_out_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140))
U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_out_gaaa(T57, T60, X91, X92)) → row2colC_out_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92))
U2_gaaaag(T24, T28, T29, X35, X36, T25, row2colC_out_gaaaa(T24, T28, T29, X35, X36)) → pB_out_gaaaag(T24, T28, T29, X35, X36, T25)
pB_in_gaaaag(T24, T28, T29, .(T120, T121), T117, .(T115, T116)) → U3_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_in_gaaaa(T24, T28, T29, .(T120, T121), T117))
U3_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_out_gaaaa(T24, T28, T29, .(T120, T121), T117)) → U4_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, pB_in_gaaaag(T115, T120, T121, X185, X186, T116))
pB_in_gaaaag(T24, T28, T29, T128, T128, []) → U5_gaaaag(T24, T28, T29, T128, row2colC_in_gaaaa(T24, T28, T29, T128, T128))
U5_gaaaag(T24, T28, T29, T128, row2colC_out_gaaaa(T24, T28, T29, T128, T128)) → pB_out_gaaaag(T24, T28, T29, T128, T128, [])
U4_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, pB_out_gaaaag(T115, T120, T121, X185, X186, T116)) → pB_out_gaaaag(T24, T28, T29, .(T120, T121), T117, .(T115, T116))
U7_ga(T24, T25, T28, T29, pB_out_gaaaag(T24, T28, T29, X35, X36, T25)) → transposeD_out_ga(.(T24, T25), .(T28, T29))
transposeD_in_ga([], []) → transposeD_out_ga([], [])

The argument filtering Pi contains the following mapping:
transposeD_in_ga(x1, x2)  =  transposeD_in_ga(x1)
.(x1, x2)  =  .(x1, x2)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
pB_in_gaaaag(x1, x2, x3, x4, x5, x6)  =  pB_in_gaaaag(x1, x6)
U2_gaaaag(x1, x2, x3, x4, x5, x6, x7)  =  U2_gaaaag(x7)
row2colC_in_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_in_gaaaa(x1)
U6_gaaaa(x1, x2, x3, x4, x5, x6, x7)  =  U6_gaaaa(x7)
row2colA_in_gaaa(x1, x2, x3, x4)  =  row2colA_in_gaaa(x1)
U1_gaaa(x1, x2, x3, x4, x5, x6, x7)  =  U1_gaaa(x7)
[]  =  []
row2colA_out_gaaa(x1, x2, x3, x4)  =  row2colA_out_gaaa(x4)
row2colC_out_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_out_gaaaa(x5)
pB_out_gaaaag(x1, x2, x3, x4, x5, x6)  =  pB_out_gaaaag(x5)
U3_gaaaag(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U3_gaaaag(x7, x8, x9)
U4_gaaaag(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U4_gaaaag(x6, x9)
U5_gaaaag(x1, x2, x3, x4, x5)  =  U5_gaaaag(x5)
transposeD_out_ga(x1, x2)  =  transposeD_out_ga

(5) DependencyPairsProof (EQUIVALENT transformation)

Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem:
Pi DP problem:
The TRS P consists of the following rules:

TRANSPOSED_IN_GA(.(T24, T25), .(T28, T29)) → U7_GA(T24, T25, T28, T29, pB_in_gaaaag(T24, T28, T29, X35, X36, T25))
TRANSPOSED_IN_GA(.(T24, T25), .(T28, T29)) → PB_IN_GAAAAG(T24, T28, T29, X35, X36, T25)
PB_IN_GAAAAG(T24, T28, T29, X35, X36, T25) → U2_GAAAAG(T24, T28, T29, X35, X36, T25, row2colC_in_gaaaa(T24, T28, T29, X35, X36))
PB_IN_GAAAAG(T24, T28, T29, X35, X36, T25) → ROW2COLC_IN_GAAAA(T24, T28, T29, X35, X36)
ROW2COLC_IN_GAAAA(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92)) → U6_GAAAA(T56, T57, T58, T60, X91, X92, row2colA_in_gaaa(T57, T60, X91, X92))
ROW2COLC_IN_GAAAA(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92)) → ROW2COLA_IN_GAAA(T57, T60, X91, X92)
ROW2COLA_IN_GAAA(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) → U1_GAAA(T81, T82, T83, T85, X139, X140, row2colA_in_gaaa(T82, T85, X139, X140))
ROW2COLA_IN_GAAA(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) → ROW2COLA_IN_GAAA(T82, T85, X139, X140)
PB_IN_GAAAAG(T24, T28, T29, .(T120, T121), T117, .(T115, T116)) → U3_GAAAAG(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_in_gaaaa(T24, T28, T29, .(T120, T121), T117))
PB_IN_GAAAAG(T24, T28, T29, .(T120, T121), T117, .(T115, T116)) → ROW2COLC_IN_GAAAA(T24, T28, T29, .(T120, T121), T117)
U3_GAAAAG(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_out_gaaaa(T24, T28, T29, .(T120, T121), T117)) → U4_GAAAAG(T24, T28, T29, T120, T121, T117, T115, T116, pB_in_gaaaag(T115, T120, T121, X185, X186, T116))
U3_GAAAAG(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_out_gaaaa(T24, T28, T29, .(T120, T121), T117)) → PB_IN_GAAAAG(T115, T120, T121, X185, X186, T116)
PB_IN_GAAAAG(T24, T28, T29, T128, T128, []) → U5_GAAAAG(T24, T28, T29, T128, row2colC_in_gaaaa(T24, T28, T29, T128, T128))
PB_IN_GAAAAG(T24, T28, T29, T128, T128, []) → ROW2COLC_IN_GAAAA(T24, T28, T29, T128, T128)

The TRS R consists of the following rules:

transposeD_in_ga(.(T24, T25), .(T28, T29)) → U7_ga(T24, T25, T28, T29, pB_in_gaaaag(T24, T28, T29, X35, X36, T25))
pB_in_gaaaag(T24, T28, T29, X35, X36, T25) → U2_gaaaag(T24, T28, T29, X35, X36, T25, row2colC_in_gaaaa(T24, T28, T29, X35, X36))
row2colC_in_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92)) → U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_in_gaaa(T57, T60, X91, X92))
row2colA_in_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) → U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_in_gaaa(T82, T85, X139, X140))
row2colA_in_gaaa([], [], [], []) → row2colA_out_gaaa([], [], [], [])
U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_out_gaaa(T82, T85, X139, X140)) → row2colA_out_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140))
U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_out_gaaa(T57, T60, X91, X92)) → row2colC_out_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92))
U2_gaaaag(T24, T28, T29, X35, X36, T25, row2colC_out_gaaaa(T24, T28, T29, X35, X36)) → pB_out_gaaaag(T24, T28, T29, X35, X36, T25)
pB_in_gaaaag(T24, T28, T29, .(T120, T121), T117, .(T115, T116)) → U3_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_in_gaaaa(T24, T28, T29, .(T120, T121), T117))
U3_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_out_gaaaa(T24, T28, T29, .(T120, T121), T117)) → U4_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, pB_in_gaaaag(T115, T120, T121, X185, X186, T116))
pB_in_gaaaag(T24, T28, T29, T128, T128, []) → U5_gaaaag(T24, T28, T29, T128, row2colC_in_gaaaa(T24, T28, T29, T128, T128))
U5_gaaaag(T24, T28, T29, T128, row2colC_out_gaaaa(T24, T28, T29, T128, T128)) → pB_out_gaaaag(T24, T28, T29, T128, T128, [])
U4_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, pB_out_gaaaag(T115, T120, T121, X185, X186, T116)) → pB_out_gaaaag(T24, T28, T29, .(T120, T121), T117, .(T115, T116))
U7_ga(T24, T25, T28, T29, pB_out_gaaaag(T24, T28, T29, X35, X36, T25)) → transposeD_out_ga(.(T24, T25), .(T28, T29))
transposeD_in_ga([], []) → transposeD_out_ga([], [])

The argument filtering Pi contains the following mapping:
transposeD_in_ga(x1, x2)  =  transposeD_in_ga(x1)
.(x1, x2)  =  .(x1, x2)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
pB_in_gaaaag(x1, x2, x3, x4, x5, x6)  =  pB_in_gaaaag(x1, x6)
U2_gaaaag(x1, x2, x3, x4, x5, x6, x7)  =  U2_gaaaag(x7)
row2colC_in_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_in_gaaaa(x1)
U6_gaaaa(x1, x2, x3, x4, x5, x6, x7)  =  U6_gaaaa(x7)
row2colA_in_gaaa(x1, x2, x3, x4)  =  row2colA_in_gaaa(x1)
U1_gaaa(x1, x2, x3, x4, x5, x6, x7)  =  U1_gaaa(x7)
[]  =  []
row2colA_out_gaaa(x1, x2, x3, x4)  =  row2colA_out_gaaa(x4)
row2colC_out_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_out_gaaaa(x5)
pB_out_gaaaag(x1, x2, x3, x4, x5, x6)  =  pB_out_gaaaag(x5)
U3_gaaaag(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U3_gaaaag(x7, x8, x9)
U4_gaaaag(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U4_gaaaag(x6, x9)
U5_gaaaag(x1, x2, x3, x4, x5)  =  U5_gaaaag(x5)
transposeD_out_ga(x1, x2)  =  transposeD_out_ga
TRANSPOSED_IN_GA(x1, x2)  =  TRANSPOSED_IN_GA(x1)
U7_GA(x1, x2, x3, x4, x5)  =  U7_GA(x5)
PB_IN_GAAAAG(x1, x2, x3, x4, x5, x6)  =  PB_IN_GAAAAG(x1, x6)
U2_GAAAAG(x1, x2, x3, x4, x5, x6, x7)  =  U2_GAAAAG(x7)
ROW2COLC_IN_GAAAA(x1, x2, x3, x4, x5)  =  ROW2COLC_IN_GAAAA(x1)
U6_GAAAA(x1, x2, x3, x4, x5, x6, x7)  =  U6_GAAAA(x7)
ROW2COLA_IN_GAAA(x1, x2, x3, x4)  =  ROW2COLA_IN_GAAA(x1)
U1_GAAA(x1, x2, x3, x4, x5, x6, x7)  =  U1_GAAA(x7)
U3_GAAAAG(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U3_GAAAAG(x7, x8, x9)
U4_GAAAAG(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U4_GAAAAG(x6, x9)
U5_GAAAAG(x1, x2, x3, x4, x5)  =  U5_GAAAAG(x5)

We have to consider all (P,R,Pi)-chains

(6) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

TRANSPOSED_IN_GA(.(T24, T25), .(T28, T29)) → U7_GA(T24, T25, T28, T29, pB_in_gaaaag(T24, T28, T29, X35, X36, T25))
TRANSPOSED_IN_GA(.(T24, T25), .(T28, T29)) → PB_IN_GAAAAG(T24, T28, T29, X35, X36, T25)
PB_IN_GAAAAG(T24, T28, T29, X35, X36, T25) → U2_GAAAAG(T24, T28, T29, X35, X36, T25, row2colC_in_gaaaa(T24, T28, T29, X35, X36))
PB_IN_GAAAAG(T24, T28, T29, X35, X36, T25) → ROW2COLC_IN_GAAAA(T24, T28, T29, X35, X36)
ROW2COLC_IN_GAAAA(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92)) → U6_GAAAA(T56, T57, T58, T60, X91, X92, row2colA_in_gaaa(T57, T60, X91, X92))
ROW2COLC_IN_GAAAA(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92)) → ROW2COLA_IN_GAAA(T57, T60, X91, X92)
ROW2COLA_IN_GAAA(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) → U1_GAAA(T81, T82, T83, T85, X139, X140, row2colA_in_gaaa(T82, T85, X139, X140))
ROW2COLA_IN_GAAA(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) → ROW2COLA_IN_GAAA(T82, T85, X139, X140)
PB_IN_GAAAAG(T24, T28, T29, .(T120, T121), T117, .(T115, T116)) → U3_GAAAAG(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_in_gaaaa(T24, T28, T29, .(T120, T121), T117))
PB_IN_GAAAAG(T24, T28, T29, .(T120, T121), T117, .(T115, T116)) → ROW2COLC_IN_GAAAA(T24, T28, T29, .(T120, T121), T117)
U3_GAAAAG(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_out_gaaaa(T24, T28, T29, .(T120, T121), T117)) → U4_GAAAAG(T24, T28, T29, T120, T121, T117, T115, T116, pB_in_gaaaag(T115, T120, T121, X185, X186, T116))
U3_GAAAAG(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_out_gaaaa(T24, T28, T29, .(T120, T121), T117)) → PB_IN_GAAAAG(T115, T120, T121, X185, X186, T116)
PB_IN_GAAAAG(T24, T28, T29, T128, T128, []) → U5_GAAAAG(T24, T28, T29, T128, row2colC_in_gaaaa(T24, T28, T29, T128, T128))
PB_IN_GAAAAG(T24, T28, T29, T128, T128, []) → ROW2COLC_IN_GAAAA(T24, T28, T29, T128, T128)

The TRS R consists of the following rules:

transposeD_in_ga(.(T24, T25), .(T28, T29)) → U7_ga(T24, T25, T28, T29, pB_in_gaaaag(T24, T28, T29, X35, X36, T25))
pB_in_gaaaag(T24, T28, T29, X35, X36, T25) → U2_gaaaag(T24, T28, T29, X35, X36, T25, row2colC_in_gaaaa(T24, T28, T29, X35, X36))
row2colC_in_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92)) → U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_in_gaaa(T57, T60, X91, X92))
row2colA_in_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) → U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_in_gaaa(T82, T85, X139, X140))
row2colA_in_gaaa([], [], [], []) → row2colA_out_gaaa([], [], [], [])
U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_out_gaaa(T82, T85, X139, X140)) → row2colA_out_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140))
U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_out_gaaa(T57, T60, X91, X92)) → row2colC_out_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92))
U2_gaaaag(T24, T28, T29, X35, X36, T25, row2colC_out_gaaaa(T24, T28, T29, X35, X36)) → pB_out_gaaaag(T24, T28, T29, X35, X36, T25)
pB_in_gaaaag(T24, T28, T29, .(T120, T121), T117, .(T115, T116)) → U3_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_in_gaaaa(T24, T28, T29, .(T120, T121), T117))
U3_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_out_gaaaa(T24, T28, T29, .(T120, T121), T117)) → U4_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, pB_in_gaaaag(T115, T120, T121, X185, X186, T116))
pB_in_gaaaag(T24, T28, T29, T128, T128, []) → U5_gaaaag(T24, T28, T29, T128, row2colC_in_gaaaa(T24, T28, T29, T128, T128))
U5_gaaaag(T24, T28, T29, T128, row2colC_out_gaaaa(T24, T28, T29, T128, T128)) → pB_out_gaaaag(T24, T28, T29, T128, T128, [])
U4_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, pB_out_gaaaag(T115, T120, T121, X185, X186, T116)) → pB_out_gaaaag(T24, T28, T29, .(T120, T121), T117, .(T115, T116))
U7_ga(T24, T25, T28, T29, pB_out_gaaaag(T24, T28, T29, X35, X36, T25)) → transposeD_out_ga(.(T24, T25), .(T28, T29))
transposeD_in_ga([], []) → transposeD_out_ga([], [])

The argument filtering Pi contains the following mapping:
transposeD_in_ga(x1, x2)  =  transposeD_in_ga(x1)
.(x1, x2)  =  .(x1, x2)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
pB_in_gaaaag(x1, x2, x3, x4, x5, x6)  =  pB_in_gaaaag(x1, x6)
U2_gaaaag(x1, x2, x3, x4, x5, x6, x7)  =  U2_gaaaag(x7)
row2colC_in_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_in_gaaaa(x1)
U6_gaaaa(x1, x2, x3, x4, x5, x6, x7)  =  U6_gaaaa(x7)
row2colA_in_gaaa(x1, x2, x3, x4)  =  row2colA_in_gaaa(x1)
U1_gaaa(x1, x2, x3, x4, x5, x6, x7)  =  U1_gaaa(x7)
[]  =  []
row2colA_out_gaaa(x1, x2, x3, x4)  =  row2colA_out_gaaa(x4)
row2colC_out_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_out_gaaaa(x5)
pB_out_gaaaag(x1, x2, x3, x4, x5, x6)  =  pB_out_gaaaag(x5)
U3_gaaaag(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U3_gaaaag(x7, x8, x9)
U4_gaaaag(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U4_gaaaag(x6, x9)
U5_gaaaag(x1, x2, x3, x4, x5)  =  U5_gaaaag(x5)
transposeD_out_ga(x1, x2)  =  transposeD_out_ga
TRANSPOSED_IN_GA(x1, x2)  =  TRANSPOSED_IN_GA(x1)
U7_GA(x1, x2, x3, x4, x5)  =  U7_GA(x5)
PB_IN_GAAAAG(x1, x2, x3, x4, x5, x6)  =  PB_IN_GAAAAG(x1, x6)
U2_GAAAAG(x1, x2, x3, x4, x5, x6, x7)  =  U2_GAAAAG(x7)
ROW2COLC_IN_GAAAA(x1, x2, x3, x4, x5)  =  ROW2COLC_IN_GAAAA(x1)
U6_GAAAA(x1, x2, x3, x4, x5, x6, x7)  =  U6_GAAAA(x7)
ROW2COLA_IN_GAAA(x1, x2, x3, x4)  =  ROW2COLA_IN_GAAA(x1)
U1_GAAA(x1, x2, x3, x4, x5, x6, x7)  =  U1_GAAA(x7)
U3_GAAAAG(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U3_GAAAAG(x7, x8, x9)
U4_GAAAAG(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U4_GAAAAG(x6, x9)
U5_GAAAAG(x1, x2, x3, x4, x5)  =  U5_GAAAAG(x5)

We have to consider all (P,R,Pi)-chains

(7) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LOPSTR] contains 2 SCCs with 11 less nodes.

(8) Complex Obligation (AND)

(9) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

ROW2COLA_IN_GAAA(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) → ROW2COLA_IN_GAAA(T82, T85, X139, X140)

The TRS R consists of the following rules:

transposeD_in_ga(.(T24, T25), .(T28, T29)) → U7_ga(T24, T25, T28, T29, pB_in_gaaaag(T24, T28, T29, X35, X36, T25))
pB_in_gaaaag(T24, T28, T29, X35, X36, T25) → U2_gaaaag(T24, T28, T29, X35, X36, T25, row2colC_in_gaaaa(T24, T28, T29, X35, X36))
row2colC_in_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92)) → U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_in_gaaa(T57, T60, X91, X92))
row2colA_in_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) → U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_in_gaaa(T82, T85, X139, X140))
row2colA_in_gaaa([], [], [], []) → row2colA_out_gaaa([], [], [], [])
U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_out_gaaa(T82, T85, X139, X140)) → row2colA_out_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140))
U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_out_gaaa(T57, T60, X91, X92)) → row2colC_out_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92))
U2_gaaaag(T24, T28, T29, X35, X36, T25, row2colC_out_gaaaa(T24, T28, T29, X35, X36)) → pB_out_gaaaag(T24, T28, T29, X35, X36, T25)
pB_in_gaaaag(T24, T28, T29, .(T120, T121), T117, .(T115, T116)) → U3_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_in_gaaaa(T24, T28, T29, .(T120, T121), T117))
U3_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_out_gaaaa(T24, T28, T29, .(T120, T121), T117)) → U4_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, pB_in_gaaaag(T115, T120, T121, X185, X186, T116))
pB_in_gaaaag(T24, T28, T29, T128, T128, []) → U5_gaaaag(T24, T28, T29, T128, row2colC_in_gaaaa(T24, T28, T29, T128, T128))
U5_gaaaag(T24, T28, T29, T128, row2colC_out_gaaaa(T24, T28, T29, T128, T128)) → pB_out_gaaaag(T24, T28, T29, T128, T128, [])
U4_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, pB_out_gaaaag(T115, T120, T121, X185, X186, T116)) → pB_out_gaaaag(T24, T28, T29, .(T120, T121), T117, .(T115, T116))
U7_ga(T24, T25, T28, T29, pB_out_gaaaag(T24, T28, T29, X35, X36, T25)) → transposeD_out_ga(.(T24, T25), .(T28, T29))
transposeD_in_ga([], []) → transposeD_out_ga([], [])

The argument filtering Pi contains the following mapping:
transposeD_in_ga(x1, x2)  =  transposeD_in_ga(x1)
.(x1, x2)  =  .(x1, x2)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
pB_in_gaaaag(x1, x2, x3, x4, x5, x6)  =  pB_in_gaaaag(x1, x6)
U2_gaaaag(x1, x2, x3, x4, x5, x6, x7)  =  U2_gaaaag(x7)
row2colC_in_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_in_gaaaa(x1)
U6_gaaaa(x1, x2, x3, x4, x5, x6, x7)  =  U6_gaaaa(x7)
row2colA_in_gaaa(x1, x2, x3, x4)  =  row2colA_in_gaaa(x1)
U1_gaaa(x1, x2, x3, x4, x5, x6, x7)  =  U1_gaaa(x7)
[]  =  []
row2colA_out_gaaa(x1, x2, x3, x4)  =  row2colA_out_gaaa(x4)
row2colC_out_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_out_gaaaa(x5)
pB_out_gaaaag(x1, x2, x3, x4, x5, x6)  =  pB_out_gaaaag(x5)
U3_gaaaag(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U3_gaaaag(x7, x8, x9)
U4_gaaaag(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U4_gaaaag(x6, x9)
U5_gaaaag(x1, x2, x3, x4, x5)  =  U5_gaaaag(x5)
transposeD_out_ga(x1, x2)  =  transposeD_out_ga
ROW2COLA_IN_GAAA(x1, x2, x3, x4)  =  ROW2COLA_IN_GAAA(x1)

We have to consider all (P,R,Pi)-chains

(10) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(11) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

ROW2COLA_IN_GAAA(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) → ROW2COLA_IN_GAAA(T82, T85, X139, X140)

R is empty.
The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
[]  =  []
ROW2COLA_IN_GAAA(x1, x2, x3, x4)  =  ROW2COLA_IN_GAAA(x1)

We have to consider all (P,R,Pi)-chains

(12) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(13) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ROW2COLA_IN_GAAA(.(T81, T82)) → ROW2COLA_IN_GAAA(T82)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.

(14) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • ROW2COLA_IN_GAAA(.(T81, T82)) → ROW2COLA_IN_GAAA(T82)
    The graph contains the following edges 1 > 1

(15) YES

(16) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

PB_IN_GAAAAG(T24, T28, T29, .(T120, T121), T117, .(T115, T116)) → U3_GAAAAG(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_in_gaaaa(T24, T28, T29, .(T120, T121), T117))
U3_GAAAAG(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_out_gaaaa(T24, T28, T29, .(T120, T121), T117)) → PB_IN_GAAAAG(T115, T120, T121, X185, X186, T116)

The TRS R consists of the following rules:

transposeD_in_ga(.(T24, T25), .(T28, T29)) → U7_ga(T24, T25, T28, T29, pB_in_gaaaag(T24, T28, T29, X35, X36, T25))
pB_in_gaaaag(T24, T28, T29, X35, X36, T25) → U2_gaaaag(T24, T28, T29, X35, X36, T25, row2colC_in_gaaaa(T24, T28, T29, X35, X36))
row2colC_in_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92)) → U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_in_gaaa(T57, T60, X91, X92))
row2colA_in_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) → U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_in_gaaa(T82, T85, X139, X140))
row2colA_in_gaaa([], [], [], []) → row2colA_out_gaaa([], [], [], [])
U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_out_gaaa(T82, T85, X139, X140)) → row2colA_out_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140))
U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_out_gaaa(T57, T60, X91, X92)) → row2colC_out_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92))
U2_gaaaag(T24, T28, T29, X35, X36, T25, row2colC_out_gaaaa(T24, T28, T29, X35, X36)) → pB_out_gaaaag(T24, T28, T29, X35, X36, T25)
pB_in_gaaaag(T24, T28, T29, .(T120, T121), T117, .(T115, T116)) → U3_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_in_gaaaa(T24, T28, T29, .(T120, T121), T117))
U3_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_out_gaaaa(T24, T28, T29, .(T120, T121), T117)) → U4_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, pB_in_gaaaag(T115, T120, T121, X185, X186, T116))
pB_in_gaaaag(T24, T28, T29, T128, T128, []) → U5_gaaaag(T24, T28, T29, T128, row2colC_in_gaaaa(T24, T28, T29, T128, T128))
U5_gaaaag(T24, T28, T29, T128, row2colC_out_gaaaa(T24, T28, T29, T128, T128)) → pB_out_gaaaag(T24, T28, T29, T128, T128, [])
U4_gaaaag(T24, T28, T29, T120, T121, T117, T115, T116, pB_out_gaaaag(T115, T120, T121, X185, X186, T116)) → pB_out_gaaaag(T24, T28, T29, .(T120, T121), T117, .(T115, T116))
U7_ga(T24, T25, T28, T29, pB_out_gaaaag(T24, T28, T29, X35, X36, T25)) → transposeD_out_ga(.(T24, T25), .(T28, T29))
transposeD_in_ga([], []) → transposeD_out_ga([], [])

The argument filtering Pi contains the following mapping:
transposeD_in_ga(x1, x2)  =  transposeD_in_ga(x1)
.(x1, x2)  =  .(x1, x2)
U7_ga(x1, x2, x3, x4, x5)  =  U7_ga(x5)
pB_in_gaaaag(x1, x2, x3, x4, x5, x6)  =  pB_in_gaaaag(x1, x6)
U2_gaaaag(x1, x2, x3, x4, x5, x6, x7)  =  U2_gaaaag(x7)
row2colC_in_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_in_gaaaa(x1)
U6_gaaaa(x1, x2, x3, x4, x5, x6, x7)  =  U6_gaaaa(x7)
row2colA_in_gaaa(x1, x2, x3, x4)  =  row2colA_in_gaaa(x1)
U1_gaaa(x1, x2, x3, x4, x5, x6, x7)  =  U1_gaaa(x7)
[]  =  []
row2colA_out_gaaa(x1, x2, x3, x4)  =  row2colA_out_gaaa(x4)
row2colC_out_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_out_gaaaa(x5)
pB_out_gaaaag(x1, x2, x3, x4, x5, x6)  =  pB_out_gaaaag(x5)
U3_gaaaag(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U3_gaaaag(x7, x8, x9)
U4_gaaaag(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U4_gaaaag(x6, x9)
U5_gaaaag(x1, x2, x3, x4, x5)  =  U5_gaaaag(x5)
transposeD_out_ga(x1, x2)  =  transposeD_out_ga
PB_IN_GAAAAG(x1, x2, x3, x4, x5, x6)  =  PB_IN_GAAAAG(x1, x6)
U3_GAAAAG(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U3_GAAAAG(x7, x8, x9)

We have to consider all (P,R,Pi)-chains

(17) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(18) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

PB_IN_GAAAAG(T24, T28, T29, .(T120, T121), T117, .(T115, T116)) → U3_GAAAAG(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_in_gaaaa(T24, T28, T29, .(T120, T121), T117))
U3_GAAAAG(T24, T28, T29, T120, T121, T117, T115, T116, row2colC_out_gaaaa(T24, T28, T29, .(T120, T121), T117)) → PB_IN_GAAAAG(T115, T120, T121, X185, X186, T116)

The TRS R consists of the following rules:

row2colC_in_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92)) → U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_in_gaaa(T57, T60, X91, X92))
U6_gaaaa(T56, T57, T58, T60, X91, X92, row2colA_out_gaaa(T57, T60, X91, X92)) → row2colC_out_gaaaa(.(T56, T57), .(T56, T58), T60, .(T58, X91), .([], X92))
row2colA_in_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140)) → U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_in_gaaa(T82, T85, X139, X140))
row2colA_in_gaaa([], [], [], []) → row2colA_out_gaaa([], [], [], [])
U1_gaaa(T81, T82, T83, T85, X139, X140, row2colA_out_gaaa(T82, T85, X139, X140)) → row2colA_out_gaaa(.(T81, T82), .(.(T81, T83), T85), .(T83, X139), .([], X140))

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
row2colC_in_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_in_gaaaa(x1)
U6_gaaaa(x1, x2, x3, x4, x5, x6, x7)  =  U6_gaaaa(x7)
row2colA_in_gaaa(x1, x2, x3, x4)  =  row2colA_in_gaaa(x1)
U1_gaaa(x1, x2, x3, x4, x5, x6, x7)  =  U1_gaaa(x7)
[]  =  []
row2colA_out_gaaa(x1, x2, x3, x4)  =  row2colA_out_gaaa(x4)
row2colC_out_gaaaa(x1, x2, x3, x4, x5)  =  row2colC_out_gaaaa(x5)
PB_IN_GAAAAG(x1, x2, x3, x4, x5, x6)  =  PB_IN_GAAAAG(x1, x6)
U3_GAAAAG(x1, x2, x3, x4, x5, x6, x7, x8, x9)  =  U3_GAAAAG(x7, x8, x9)

We have to consider all (P,R,Pi)-chains

(19) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(20) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PB_IN_GAAAAG(T24, .(T115, T116)) → U3_GAAAAG(T115, T116, row2colC_in_gaaaa(T24))
U3_GAAAAG(T115, T116, row2colC_out_gaaaa(T117)) → PB_IN_GAAAAG(T115, T116)

The TRS R consists of the following rules:

row2colC_in_gaaaa(.(T56, T57)) → U6_gaaaa(row2colA_in_gaaa(T57))
U6_gaaaa(row2colA_out_gaaa(X92)) → row2colC_out_gaaaa(.([], X92))
row2colA_in_gaaa(.(T81, T82)) → U1_gaaa(row2colA_in_gaaa(T82))
row2colA_in_gaaa([]) → row2colA_out_gaaa([])
U1_gaaa(row2colA_out_gaaa(X140)) → row2colA_out_gaaa(.([], X140))

The set Q consists of the following terms:

row2colC_in_gaaaa(x0)
U6_gaaaa(x0)
row2colA_in_gaaa(x0)
U1_gaaa(x0)

We have to consider all (P,Q,R)-chains.

(21) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • U3_GAAAAG(T115, T116, row2colC_out_gaaaa(T117)) → PB_IN_GAAAAG(T115, T116)
    The graph contains the following edges 1 >= 1, 2 >= 2

  • PB_IN_GAAAAG(T24, .(T115, T116)) → U3_GAAAAG(T115, T116, row2colC_in_gaaaa(T24))
    The graph contains the following edges 2 > 1, 2 > 2

(22) YES